#ifndef REQUEST_HANDLER_SERVER_HH
# define REQUEST_HANDLER_SERVER_HH

# include <request/request-handler.hh>

# include "../misc/obj-vect.hh"

class Server;

class RequestHandlerServer: public RequestHandler
{
public:
  RequestHandlerServer (Server* s, ObjVect* gt);

  virtual void treat (const boost::shared_ptr<GetObject>& o, const int* clientid = 0);
  virtual void treat (const boost::shared_ptr<AskMap>& o, const int* clientid = 0);
  virtual void treat (const boost::shared_ptr<Connection>& o, const int* clientid = 0);
  virtual void treat (const boost::shared_ptr<Disconnection>& o, const int* clientid = 0);
  virtual void treat (const boost::shared_ptr<GetAllObjects>& o, const int* clientid = 0);
  virtual void treat (const boost::shared_ptr<Text>& o, const int* clientid = 0);
  virtual void treat (const boost::shared_ptr<UpdateObj>& o, const int* clientid = 0);
  virtual void treat (const boost::shared_ptr<UpdatePos>& o, const int* clientid = 0);
  virtual void treat (const boost::shared_ptr<GameMode>& o, const int* clientid = 0);
  virtual void treat (const boost::shared_ptr<GameZone>& o, const int* clientid = 0);
  virtual void treat (const boost::shared_ptr<Ready>& o, const int* clientid = 0);
  virtual void treat (const boost::shared_ptr<Move>& o, const int* clientid = 0);
protected:
  Server* s_;
  ObjVect* objvect_;
};

#endif /// !REQUEST_HANDLER_SERVER_HH
